home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
151-175
/
scopedisk157
/
append
/
append.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-19
|
2KB
|
60 lines
/*
* APPEND (c)1989 Oliver Enseling eine Datei an eine andere anfügen
* Syntax: APPEND files [TO] file files darf ein AmigaDOS-Muster,
* oder eine Auflistung mehrerer Dateien sein file ist eine einzelne
* AmigaDOS-Datei
*/
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#define BUFSIZE 256
struct FILEINFO FI;
char Buffer[BUFSIZE];
#ifdef DEUTSCH
#define SYNTAX \
"Syntax: APPEND dateien | muster [dateien | muster] [...]] [TO] datei\n" \
"Version 1.00, ©1989 Oliver Enseling\n"
#define NOREAD "%s kann nicht gelesen werden\n"
#define NOWRITE "%s kann nicht beschrieben werden\n"
#else
#define SYNTAX \
"Usage: APPEND files | pattern [files | pattern] [...]] [TO] file\n" \
"Version 1.00, ©1989 Oliver Enseling\n"
#define NOREAD "read error %s\n"
#define NOWRITE "write error %s\n"
#endif
void
main(argc, argv)
int argc;
char **argv;
{
if (argc < 3)
printf(SYNTAX);
else {
int src, dest, count, i, maxi = stricmp(argv[argc - 2], "TO") == 0 ? argc - 2 : argc - 1;
if ((dest = open(argv[argc - 1], O_APPEND | O_WRONLY | O_CREAT)) >= 0) {
for (i = 1; i < maxi; i++)
if ((src = open(argv[i], O_RDONLY)) >= 0) {
do {
count = read(src, Buffer, BUFSIZE);
write(dest, Buffer, count);
} while (count > 0);
close(src);
} else
printf(NOREAD, argv[i]);
close(dest);
} else
printf(NOWRITE, argv[argc - 1]);
}
}